* lisp/iswitchb.el (iswitchb-kill-buffer): Avoid `iswitchb-make-buflist'
authorLeo <sdl.web@gmail.com>
Thu, 28 Oct 2010 01:30:01 +0000 (21:30 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 28 Oct 2010 01:30:01 +0000 (21:30 -0400)
which changes the order of matches seen by users.

lisp/ChangeLog
lisp/iswitchb.el

index e724e197978231560d81da6eb253d6e2dd632823..141bae50ee43c329aeb977ef25900038ce63ee6a 100644 (file)
@@ -1,4 +1,9 @@
-2010-10-28  Jes Bodi Klinke  <jes@bodi-klinke.dk>
+2010-10-28  Leo  <sdl.web@gmail.com>
+
+       * iswitchb.el (iswitchb-kill-buffer): Avoid `iswitchb-make-buflist'
+       which changes the order of matches seen by users (bug#7231).
+
+2010-10-28  Jes Bodi Klinke  <jes@bodi-klinke.dk>  (tiny change)
 
        * progmodes/compile.el (compilation-mode-font-lock-keywords):
        Don't confuse -omega as "-o mega".
index 808a23577d10fccab85407dcdbba798be1bf7cf9..48f0edb49e0a9f4ea2d51ba1affb9b9d968674d7 100644 (file)
@@ -1033,7 +1033,9 @@ Return the modified list with the last element prepended to it."
     (setq buf (car iswitchb-matches))
     ;; check to see if buf is non-nil.
     (if buf
-       (progn
+       (let ((bufobjs (mapcar (lambda (name)
+                                (or (get-buffer name) name))
+                              iswitchb-buflist)))
          (kill-buffer buf)
 
          ;; Check if buffer exists.  XEmacs gnuserv.el makes alias
@@ -1044,8 +1046,13 @@ Return the modified list with the last element prepended to it."
              (setq iswitchb-rescan t)
            ;; Else `kill-buffer' succeeds so re-make the buffer list
            ;; taking into account packages like uniquify may rename
-           ;; buffers
-           (iswitchb-make-buflist iswitchb-default))))))
+           ;; buffers, and try to preserve the ordering of buffers.
+           (setq iswitchb-buflist
+                 (delq nil (mapcar (lambda (b)
+                                     (if (bufferp b)
+                                         (buffer-name b)
+                                       b))
+                                   bufobjs))))))))
 
 ;;; VISIT CHOSEN BUFFER
 (defun iswitchb-visit-buffer (buffer)